// 面试重点

let arr = [1, 2, 3, 4, 5, 6]

Array.prototype.my_reduce = function(cb, ...args) {
  let start, index = 0
  if (args.length) {
    start = args[0] // 如果传了后面参数
  } else {
    start = this[0] // 如果没传后面
    index++
  }

  for (let i = index; i < this.length; i++) {
    start = cb(init, this[i], i, this)
  }
  return start
}

// return 的值赋回给 pre，当数组遍历结束，返回最终的 pre 的值
const res = arr.reduce((pre, cur, index, arr) => {
  console.log(pre, cur, index, arr);
  return pre + cur
}, 0)

console.log(res);
